﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using Dados.Mappers;
using Dados;

namespace AcessoDados
{
    public class AcessoChampion
    {
        #region Atributos

        private const string NOMEXML = "champions";

        #endregion

        #region Metodos

        #region Carregar Lista Categoria
        /// <summary>
        /// Carrega a lista completa de Champions
        /// </summary>
        /// <param name="listaCategoriaCompleta">Lista completa de categoria Champion</param>
        /// <returns>List<Champion> Completa</returns>
        public List<Champion> CarregarListaChampions(List<CategoriaChampion> listaCategoriaCompleta)
        {
            List<Champion> retorno = null;
            List<CategoriaChampion> listaCategoria = null;
            XmlDocument documentoXml = null;
            CategoriaChampion categoria = null;
            Champion champion = null;
            AcessoCategoria dao = null;
            int quantidadeNosCategoria = 0;
            try
            {
                dao = new AcessoCategoria();
                retorno = new List<Champion>();
                documentoXml = new XmlDocument();
                string xml = Resource.LerXml(NOMEXML);
                documentoXml.LoadXml(xml);

                int quantidadeNos = documentoXml.ChildNodes.Item(1).ChildNodes.Count;
                for (int i = 0; i < quantidadeNos; i++)
                {
                    champion = new Champion();
                    listaCategoria = new List<CategoriaChampion>();
                    champion.Id = Convert.ToInt32(documentoXml.ChildNodes.Item(1).ChildNodes.Item(i).ChildNodes.Item(0).InnerText);
                    champion.Nome = documentoXml.ChildNodes.Item(1).ChildNodes.Item(i).ChildNodes.Item(1).InnerText;
                    quantidadeNosCategoria = documentoXml.ChildNodes.Item(1).ChildNodes.Item(i).ChildNodes.Item(2).ChildNodes.Count;
                    for (int j = 0; j < quantidadeNosCategoria; j++)
                    {
                        categoria = new CategoriaChampion();
                        categoria.Id = Convert.ToInt32(documentoXml.ChildNodes.Item(1).ChildNodes.Item(i).ChildNodes.Item(2).ChildNodes.Item(j).InnerText);
                        categoria.Nome = dao.BuscarNomeCategoria(categoria.Id, listaCategoriaCompleta);
                        listaCategoria.Add(categoria);
                    }
                    champion.Categorias = listaCategoria;

                    retorno.Add(champion);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                listaCategoria = null;
                documentoXml = null;
                categoria = null;
                champion = null;
                dao = null;
            }
            return retorno;
        }

        #endregion

        #endregion
    }
}